package com.tedu.api.socket;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**  小  老  弟
 * 服务器端
 * 运行服务器端:ServerSocket  网络连接类:申请端口号:0~9999之间
 * 步骤:1.服务器端创建私有属性ServerSocket【具备发送网络型数据】
 * 目的:Server类中,任何地方随时使用ServerSocket方法
 * 2.创建Server构造器
 * 目的:创建并在ServerSocket对象中申请端口号
 * 主方法中直接调用Server对象,直接调用默认构造器
 * 3.Server添加方法:static()等----实现逻辑的
 * 目的:等待客户端发起网络连接(socket套接字) IO流操作:传输文字
 * 4.在主方法中创建Server类对象--->空参构造器【申请端口号】
 * 并且执行start方法
 */
public class Server {
    //1.创建服务器端Socket
    private ServerSocket serverSocket;
    //2.创建构造器---创建端口号:6666
    public Server(){
        try {
            serverSocket=new ServerSocket(67);//经典什么等于new什么并往括号写东西
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    //3.创建 start 方法accept()传输数据:IO
    public void start() throws IOException {
        //等待客户端连接,指定端口号:6666
        System.out.println("等待连接");
        BufferedReader br= null;
        Socket s=serverSocket.accept();//卡住--客户端有链接--通过   叉出去  返回值Socket
        System.out.println("一个牢d底连上");
        //客户端连接服务器端--accept,返回socket对象---IO流
        InputStream is=s.getInputStream();//低级流--读入
        //高级流--转换流,目的:指定编码集:UTF8
        InputStreamReader isr=new InputStreamReader(is,"UTF8");
        //高级流--缓冲输入流
        br = new BufferedReader(isr);
        //服务器端一直读
        while(true){
            String str= null;//返回值String  给str保存
            str = br.readLine();
            System.out.println("小黑子:"+str);//打印 小黑子发来文本
        }
    }
    //4.创建主方法---服务器程序启动
    public static void main(String[] args) throws IOException {
        //执行:先创建Server类-->调用空参构造器-->申请端口号250
        Server server=new Server();
        //执行:然后调用start方法--->等待客户端连接操作---进行IO流
        server.start();//叉出去
    }
}
